import 'package:common_utils/common_utils.dart';

/// 分--->元
extension Fen2yuan on int {
  String get toYuan {
    return MoneyUtil.changeYWithUnit(this / 100, MoneyUnit.NORMAL, format: MoneyFormat.YUAN_INTEGER);
  }
}
/// 分--->元
extension DoubleFen2Yuan on double {
  String get toYuan {
    return MoneyUtil.changeYWithUnit(this / 100, MoneyUnit.NORMAL, format: MoneyFormat.NORMAL);
  }
}

/// 元--->分
extension StringFen2Yuan on String {
  String get toYuan {
    final value = int.tryParse(this) ?? 0;
    if (value == 0) {
      return '0';
    }
    return MoneyUtil.changeF2Y(value);
  }
}

/// 元 格式化
extension DoubleStr2String on String {
  String get formatYuan {
    return MoneyUtil.changeYWithUnit(this, MoneyUnit.NORMAL, format: MoneyFormat.YUAN_INTEGER);
  }
}
/// 元 格式化
extension Double2String on double {
  String get formatYuan {
    return MoneyUtil.changeYWithUnit(this, MoneyUnit.NORMAL, format: MoneyFormat.YUAN_INTEGER);
  }
}

/// 元--->分
extension Yuan2Fen on double {
  int get toFen {
    return MoneyUtil.changeY2F(this);
  }
}

/// 元--->分
extension YuanString2Fen on String {
  int get toFen {
    return MoneyUtil.changeY2F(this);
  }
}

/// String转double
extension String2Double on String {
  double get toDouble {
    return double.tryParse(this) ?? 0.0;
  }
}

/// 判断二维码类型
/// 返回: 支付宝 微信 ''
extension String2PayType on String {
  String get payType {
    // 如果是空字符串
    if (isEmpty) {
      return '';
    }
    // 支付宝二维码通常以25-30开头的数字 RegExp(r'^2[5-9]\d{14,}$')
    // 微信二维码通常以10-19开头的数字 RegExp(r'^1[0-9]\d{14,}$')
    if (RegExp(r'^2[5-9]\d{14,}$').hasMatch(this)) {
      return '支付宝';
    }
    if (RegExp(r'^1[0-9]\d{14,}$').hasMatch(this)) {
      return '微信';
    }
    return '';
  }
}

/// 处理手机号
extension String2Phone on String {
  String get phone {
    if (isEmpty) {
      return '';
    }
    return this.replaceAllMapped(RegExp(r'(\d{3})\d{4}(\d{4})'), (match) => '${match[1]}****${match[2]}');
  }
}

/// 取手机号后4位
extension String4Phone on String {
  String get phone4 {
    if (isEmpty) {
      return '';
    }
    if (this.length < 4) {
      return '';
    }
    return this.substring(this.length - 4);
  }
}

/// 银行卡号格式化
/// 每4位添加一个空格
extension String2BankCard on String {
  String get bankCard {
    if (isEmpty) {
      return '';
    }
    return this.replaceAllMapped(RegExp(r'(\d{4})(?=\d)'), (match) => '${match[1]} ');
  }
}
